package Principal;

import javax.swing.event.TreeModelListener;
        import javax.swing.tree.TreeModel;
        import javax.swing.tree.TreePath;

        import org.antlr.runtime.tree.CommonTree;

       
        public class ASTtoTreeModelAdapter implements  TreeModel {

            CommonTree m_tree = null;

            public ASTtoTreeModelAdapter(CommonTree t) {
                m_tree = t;
            }

            /*
             * (non-Javadoc)
             * 
             * @see javax.swing.tree.TreeModel#addTreeModelListener(javax.swing.event.TreeModelListener)
             */
            public void addTreeModelListener(TreeModelListener l) {
                // TODO Auto-generated method stub

            }

            /*
             * (non-Javadoc)
             * 
             * @see javax.swing.tree.TreeModel#getChild(java.lang.Object, int)
             */
            public Object getChild(Object parent, int index) {
                return ((CommonTree) parent).getChild(index);
            }

            /*
             * (non-Javadoc)
             * 
             * @see javax.swing.tree.TreeModel#getChildCount(java.lang.Object)
             */
            public int getChildCount(Object parent) {
                return ((CommonTree) parent).getChildCount();
            }

            /*
             * (non-Javadoc)
             * 
             * @see javax.swing.tree.TreeModel#getIndexOfChild(java.lang.Object,
             *      java.lang.Object)
             */
            public int getIndexOfChild(Object parent, Object child) {
                if (parent == null || child == null)
                    return -1;
                CommonTree cp = ((CommonTree) parent);
                CommonTree cc = ((CommonTree) child);
                for (int i = 0; i < cp.getChildCount(); i++) {
                    if (cp.getChild(i).equals(cc))
                        return i;
                }
                return -1;
            }

            /*
             * (non-Javadoc)
             * 
             * @see javax.swing.tree.TreeModel#getRoot()
             */
            public Object getRoot() {
                return m_tree;
            }

            /*
             * (non-Javadoc)
             * 
             * @see javax.swing.tree.TreeModel#isLeaf(java.lang.Object)
             */
            public boolean isLeaf(Object node) {
                CommonTree cn = ((CommonTree) node);
                boolean r = (cn.getChildCount() == 0) ? true : false;
                return r;
            }

            /*
             * (non-Javadoc)
             * 
             * @see javax.swing.tree.TreeModel#removeTreeModelListener(javax.swing.event.TreeModelListener)
             */
            public void removeTreeModelListener(TreeModelListener l) {
                // TODO Auto-generated method stub

            }

            /*
             * (non-Javadoc)
             * 
             * @see javax.swing.tree.TreeModel#valueForPathChanged(javax.swing.tree.TreePath,
             *      java.lang.Object)
             */
            public void valueForPathChanged(TreePath path, Object newValue) {
                // TODO Auto-generated method stub

            }

        }